The present invention generally relates to error correction techniques for semiconductor memories and more specifically relates to providing single bit error correction/double bit error detection (SEC/DED) using a coding scheme which utilizes through checking parity bits.
R. W. Hamming published an article entitled "Error Detecting and Error Correcting Codes" in the Bell System Technical Journal (i.e., volume 29 pp 147-160, April 1950) in 1950 which proposed a method of coding data which permits correction of single bit errors and detection of double bit errors (i.e., SEC/DED). This technique has become very popular for use in semiconductor memories in recent years, since it permits the utilization of large scale integrated circuit (LSI) semiconductor memories which may contain known intermittant or solid errors. The technique proposed by Hamming necessitates the use of redundant coding bits to effect the error detection and correction. The work by Hamming and many subsequent efforts by others were directed toward establishing coding schemes which require a minimum number of redundant coding bits to provide a given level of error detection and correction.
A second important evolution in computer error detection is the use of through checking. In its simplest form, through checking appends one or more redundant parity bits to each data quantity for internal transfers occurring within the computer. By using such through checking, errors may be detected and isolated during normal register-to-register transfers. Whereas implementing through checking would appear to be a simple hardware decision (i.e., should the hardware be added for generation, transfer and checking of redundant parity bits), the implications may be quite significant in machines having highly microprogrammed architecture. Recovery from intrasequence intermittant errors is possible because of early error detection capabilities, for example.
It is now common for medium and large scale computers to employ both SEC/DED for memories and through checking for internal data paths. These two techniques are historically viewed and implemented independently.